package com.weiliang.www;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

/**
 * @Author: liangWeiQUQ
 * @Description: 给定一个字符串，编写一个函数判定其是否为某个回文串的排列之一。
 * 回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。
 * 回文串不一定是字典当中的单词
 * @DateTime: 2021/3/8 20:19
 **/
public class canPermutePalindrome {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一串字符串");
        String s = scanner.nextLine();
        boolean b = canPermutePalindrome(s);
        System.out.println("这个字符串是回文字符串码" + b);
    }

    static boolean canPermutePalindrome(String s) {
        //char[] aChars = s.toCharArray();
        //String a1 = "";
        //String a2 = "";
        //for (int i = 0; i < aChars.length; i++) {
        //    a1 += aChars[i];
        //}
        //for (int j = aChars.length - 1; j >= 0; j--) {
        //    a2 += aChars[j];
        //}
        //char[] a11 = a1.toCharArray();
        //char[] a22 = a2.toCharArray();
        //return Arrays.equals(a11, a22);
        //利用hashset不能重复的原理
        Set<Character> set = new HashSet<>();
        for (int i = 0; i < s.length(); i++) {
            if (set.contains(s.charAt(i))) {
                set.remove(s.charAt(i));
            } else {
                set.add(s.charAt(i));
            }
        }
        return set.size() < 2;
        }
    }
